package com.zx.notification.producer.config;

import lombok.Getter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Configuration;

/**
 * Kafka生产者配置类
 * 用于读取和管理Kafka生产者相关的配置参数
 */
@RefreshScope // 支持Nacos的动态刷新功能
@Configuration
@Getter
public class KafkaProducerConfig {
    /**
     * Kafka是否启用，控制是否启用Kafka消息队列功能
     */
    @Value("${spring.kafka.enabled:true}")
    private boolean kafkaEnabled;

    /**
     * Kafka服务器地址列表，用于连接Kafka集群
     */
    @Value("${spring.kafka.bootstrap-servers}")
    private String bootstrapServers;

    // Producer配置
    /**
     * Kafka生产者发送失败重试次数，当消息发送失败时的重试机制配置
     */
    @Value("${spring.kafka.producer.retries}")
    private int producerRetries;

    /**
     * Kafka生产者批量发送大小(字节)，控制批量发送消息的大小以提高吞吐量
     */
    @Value("${spring.kafka.producer.batch-size}")
    private int producerBatchSize;

    /**
     * Kafka生产者批量发送等待时间(毫秒)，控制批量发送消息的等待时间以平衡延迟和吞吐量
     */
    @Value("${spring.kafka.producer.linger-ms}")
    private int producerLingerMs;

    /**
     * Kafka生产者缓冲区大小(字节)，设置生产者可用的缓冲区大小
     */
    @Value("${spring.kafka.producer.buffer-memory}")
    private int producerBufferMemory;

}